Whiptail 介绍
Whiptail 是一个基于文本的对话框工具,用于在终端中创建简单的用户界面。它是 Linux 系统中的一个实用程序,常用于 shell 脚本中与用户进行交互。Whiptail 是 Dialog 的一个轻量级替代品,功能类似但更简单。
主要特点
- 纯文本界面,适用于终端环境
- 支持多种对话框类型:消息框、菜单、输入框、进度条等
- 轻量级,依赖较少
- 适合在 shell 脚本中使用
常见对话框类型
--msgbox
: 显示消息--yesno
: 是/否选择--inputbox
: 文本输入--passwordbox
: 密码输入--menu
: 菜单选择--checklist
: 复选框列表--radiolist
: 单选列表--gauge
: 进度条
测试脚本示例
以下是一个使用 whiptail 的测试脚本,展示了多种对话框类型:
#!/bin/bash
# 显示欢迎消息
whiptail --title "欢迎" --msgbox "这是一个 whiptail 测试脚本。\n按 OK 继续。" 10 60
# 是/否对话框
if whiptail --title "确认" --yesno "你想继续这个测试吗?" 10 60; then
whiptail --title "选择" --msgbox "你选择了继续。" 10 60
else
whiptail --title "选择" --msgbox "你选择了退出。" 10 60
exit 0
fi
# 输入框
NAME=$(whiptail --title "输入测试" --inputbox "请输入你的名字:" 10 60 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
whiptail --title "结果" --msgbox "你的名字是: $NAME" 10 60
else
whiptail --title "结果" --msgbox "你取消了输入。" 10 60
fi
# 菜单选择
OPTION=$(whiptail --title "菜单测试" --menu "选择一个选项:" 15 60 4 \
"1" "选项 1" \
"2" "选项 2" \
"3" "选项 3" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
whiptail --title "选择" --msgbox "你选择了选项 $OPTION" 10 60
else
whiptail --title "选择" --msgbox "你取消了菜单选择。" 10 60
fi
# 复选框
DISTROS=$(whiptail --title "复选框测试" --checklist \
"选择你喜欢的 Linux 发行版:" 15 60 4 \
"debian" "Debian" ON \
"ubuntu" "Ubuntu" OFF \
"centos" "CentOS" OFF \
"fedora" "Fedora" OFF 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
whiptail --title "选择" --msgbox "你选择了: $DISTROS" 10 60
else
whiptail --title "选择" --msgbox "你取消了选择。" 10 60
fi
# 进度条
{
for ((i = 0 ; i <= 100 ; i+=5)); do
sleep 0.1
echo $i
done
} | whiptail --gauge "请等待进度条完成..." 6 60 0
# 结束消息
whiptail --title "完成" --msgbox "测试脚本已完成。感谢使用!" 10 60
使用方法
- 将上述脚本保存为
whiptail_test.sh
- 添加执行权限:
chmod +x whiptail_test.sh
- 运行脚本:
./whiptail_test.sh
注意:运行前请确保系统已安装 whiptail,如果没有安装,可以使用以下命令安装:
- Debian/Ubuntu:
sudo apt-get install whiptail
- CentOS/RHEL:
sudo yum install newt
如你想要我为你展示 dialog 版本,或者想扩展该脚本功能,也欢迎继续提问!